package com.example.demo.proxy;


import com.example.demo.model.dto.CreateAccountDTO;
import com.example.demo.model.dto.DealResultDTO;
import com.example.demo.model.dto.NFTClassListDTO;
import com.example.demo.model.dto.NFTOperateDTO;
import com.example.demo.model.req.*;

/**
 * @author enlai.wang 16621134798
 * @date: 2022/5/26
 */
public interface AvataProxy {

    /**
     * 创建离岸账户
     * @param name 账户名称
     * @param operationId 操作id，需幂等
     * @return
     */
    CreateAccountDTO createAccount(String name, String operationId);

    /**
     * 查询NFT类别
     * @param nftClassListReq
     * @return
     */
    NFTClassListDTO queryNFTClassList(NFTClassListReq nftClassListReq);

    /**
     * 发行NFT
     * @param nftPublishReq
     * @return
     */
    NFTOperateDTO publishNFT(NFTPublishReq nftPublishReq);

    /**
     * 上链交易结果查询
     * @param taskId TASK ID
     * @return
     */
    DealResultDTO queryDealResult(String taskId);

    /**
     * 转让NFT
     * @param nftTransferReq
     * @return
     */
    NFTOperateDTO transferNFT(NFTTransferReq nftTransferReq);

    /**
     * 创建NFT类别
     * @param nftCreateReq
     * @return
     */
    NFTOperateDTO createNFT(NFTCreateReq nftCreateReq);

    /**
     * NFT销毁
     * @param nftDestoryReq
     * @return
     */
    NFTOperateDTO destroyNFT(NFTDestoryReq nftDestoryReq);
}
